/****************************************
 * Copyright (c) 2015 NiuWa.
 * All rights reserved.
 * Created on 2015年4月15日
 * 
 * Contributors:
 * 	   Percy.Lo - initial implementation
 ****************************************/
package com.niuwa.p2p.service.exchange;

import java.util.LinkedList;
import java.util.List;

import com.mongodb.DBObject;
import com.niuwa.p2p.core.enums.GatheringFoundType;
import com.niuwa.p2p.core.enums.MongoQueueEnum;
import com.niuwa.p2p.server.manggoDB.exchange.FundResult;

/**
 * @title 借款债权项目和资金匹配结果内部处理服务
 *
 * @author Percy.Lo
 * @version 1.0
 * @created 2015年4月15日
 */
public interface IMatchInnerService {

	/**
	 * 保存一笔借款或债转转让的匹配结果
	 * @param loanQueue 借款项目所属队列
	 * @param loanOrClaim 借款项目
	 * @param matchingInvestList 对应匹配到的投资记录
	 * @param tradeDetail 对应匹配后产生的交易记录
	 * @param gatheringFoundType 调取资金的方式，null表示非调取资金
	 * @return true-保存成功，保存失败则抛出异常
	 */
	public boolean batchInnerSaveMatchedResult(MongoQueueEnum loanQueue, DBObject loanOrClaim, LinkedList<FundResult> matchingInvestList, List<FundResult> tradeDetail, GatheringFoundType gatheringFoundType)throws Exception;
	
	/**
	 * 自转债权满标操作
	 * @param serialNo 债权转让申请编号
	 * @param recordNo 债权转让者的投资记录id
	 * @param creditVersion 转让债权的版本号，防止同时有还款操作
	 * @param transProductCode 债权转让产品的代码
	 */
	public boolean saveSelfTransfer(String serialNo, String recordNo, String creditVersion, String transProductCode) throws Exception;

}